Skip to main content

v0.5.0

2023-04-12

DefraDB v0.5 is a major pre-production release. Until the stable version 1.0 is reached, the SemVer minor patch number will denote notable releases, which will give the project freedom to experiment and explore potentially breaking changes.

There many new features in this release, but most importantly, this is the first open source release for DefraDB. As such, this release focused on various quality of life changes and refactors, bug fixes, and overall cleanliness of the repo so it can effectively be used and tested in the public domain.

To get a full outline of the changes, we invite you to review the official changelog below. Some highlights are the first iteration of our schema update system, allowing developers to add new fields to schemas using our JSON Patch based DDL, a new DAG based delete system which will persist "soft-delete" ops into the CRDT Merkle DAG, and a early prototype for our collection level peer-to-peer synchronization.

This release does include a Breaking Change to existing v0.4.x databases. If you need help migrating an existing deployment, reach out at [email protected] or join our Discord at https://discord.source.network/.

Features

  • Add document delete mechanics (#1263)
  • Ability to explain an executed request (#1188)
  • Add SchemaPatch CLI command (#1250)
  • Add support for one-one mutation from sec. side (#1247)
  • Store only key in DAG instead of dockey path (#1245)
  • Add collectionId field to commit field (#1235)
  • Add field kind substitution for PatchSchema (#1223)
  • Add dockey field for commit field (#1216)
  • Allow new fields to be added locally to schema (#1139)
  • Add like sub-string filter (#1091)
  • Add ability for P2P to wait for pushlog by peer (#1098)
  • Add P2P collection topic subscription (#1086)
  • Add support for schema version id in queries (#1067)
  • Add schema version id to commit queries (#1061)
  • Persist schema version at time of commit (#1055)
  • Add ability to input simple explain type arg (#1039)

Fixes

  • API address parameter validation (#1311)
  • Improve error message for NonNull GQL types (#1333)
  • Handle panics in the rpc server (#1330)
  • Handle returned error in select.go (#1329)
  • Resolve handful of CLI issues (#1318)
  • Only check for events queue on subscription request (#1326)
  • Remove client Create/UpdateCollection (#1309)
  • CLI to display specific command usage help (#1314)
  • Fix P2P collection CLI commands (#1295)
  • Dont double up badger file path (#1299)
  • Update immutable package (#1290)
  • Fix panic on success of Add/RemoveP2PCollections (#1297)
  • Fix deadlock on memory-datastore Close (#1273)
  • Determine if query is introspection query (#1255)
  • Allow newly added fields to sync via p2p (#1226)
  • Expose ExplainEnum in the GQL schema (#1204)
  • Resolve aggregates' mapping with deep nested subtypes (#1175)
  • Make sort stable and handle nil comparison (#1094)
  • Change successful schema add status to 200 (#1106)
  • Add delay in P2P test util execution (#1093)
  • Ensure errors test don't hard expect folder name (#1072)
  • Remove potential P2P deadlock (#1056)
  • Rework the P2P integration tests (#989)
  • Improve DAG sync with highly concurrent updates (#1031)

Documentation

  • Update docs for the v0.5 release (#1320)
  • Document client interfaces in client/db.go (#1305)
  • Document client Description types (#1307)
  • Improve security policy (#1240)
  • Add security disclosure policy (#1194)
  • Correct commits query example in readme (#1172)

Refactoring

  • Improve p2p collection operations on peer (#1286)
  • Migrate gql introspection tests to new framework (#1211)
  • Reorganise client transaction related interfaces (#1180)
  • Config-local viper, rootdir, and logger parsing (#1132)
  • Migrate mutation-relation tests to new framework (#1109)
  • Rework integration test framework (#1089)
  • Generate gql types using col. desc (#1080)
  • Extract config errors to dedicated file (#1107)
  • Change terminology from query to request (#1054)
  • Allow db keys to handle multiple schema versions (#1026)
  • Extract query schema errors to dedicated file (#1037)
  • Extract planner errors to dedicated file (#1034)
  • Extract query parser errors to dedicated file (#1035)

Testing

  • Remove test reference to DEFRA_ROOTDIR env var (#1328)
  • Expand tests for Peer subscribe actions (#1287)
  • Fix flaky TestCloseThroughContext test (#1265)
  • Add gql introspection tests for patch schema (#1219)
  • Explicitly state change detector split for test (#1228)
  • Add test for successful one-one create mutation (#1215)
  • Ensure that all databases are always closed on exit (#1187)
  • Add P2P tests for Schema Update adding field (#1182)
  • Migrate P2P/state tests to new framework (#1160)
  • Remove sleep from subscription tests (#1156)
  • Fetch documents on test execution start (#1163)
  • Introduce basic testing for the version module (#1111)
  • Boost test coverage for collection_update (#1050)
  • Wait between P2P update retry attempts (#1052)
  • Exclude auto-generated protobuf files from codecov (#1048)
  • Add P2P tests for relational docs (#1042)

Continuous integration

  • Add workflow that builds DefraDB AMI upon tag push (#1304)
  • Allow PR title to end with a capital letter (#1291)
  • Changes for dependabot to be well-behaved (#1165)
  • Skip benchmarks for dependabot (#1144)
  • Add workflow to ensure deps build properly (#1078)
  • Runner and Builder Containerfiles (#951)
  • Fix go-header linter rule to be any year (#1021)

Chore

  • Add Islam as contributor (#1302)
  • Update go-libp2p to 0.26.4 (#1257)
  • Improve the test coverage of datastore (#1203)
  • Add issue and discussion templates (#1193)
  • Bump libp2p/go-libp2p-kad-dht from 0.21.0 to 0.21.1 (#1146)
  • Enable dependabot (#1120)
  • Update opentelemetry dependencies (#1114)
  • Update dependencies including go-ipfs (#1112)
  • Bump to GoLang v1.19 (#818)
  • Remove versionedScan node (#1049)

Bot

  • Bump github.com/multiformats/go-multiaddr from 0.8.0 to 0.9.0 (#1277)
  • Bump google.golang.org/grpc from 1.53.0 to 1.54.0 (#1233)
  • Bump github.com/multiformats/go-multibase from 0.1.1 to 0.2.0 (#1230)
  • Bump github.com/ipfs/go-libipfs from 0.6.2 to 0.7.0 (#1231)
  • Bump github.com/ipfs/go-cid from 0.3.2 to 0.4.0 (#1200)
  • Bump github.com/ipfs/go-ipfs-blockstore from 1.2.0 to 1.3.0 (#1199)
  • Bump github.com/stretchr/testify from 1.8.1 to 1.8.2 (#1198)
  • Bump github.com/ipfs/go-libipfs from 0.6.1 to 0.6.2 (#1201)
  • Bump golang.org/x/crypto from 0.6.0 to 0.7.0 (#1197)
  • Bump libp2p/go-libp2p-gostream from 0.5.0 to 0.6.0 (#1152)
  • Bump github.com/ipfs/go-libipfs from 0.5.0 to 0.6.1 (#1166)
  • Bump github.com/ugorji/go/codec from 1.2.9 to 1.2.11 (#1173)
  • Bump github.com/libp2p/go-libp2p-pubsub from 0.9.0 to 0.9.3 (#1183)